/**
 * Mirage JS 是一个 API 模拟库
 * https://www.miragejs.cn/
 */
import { createServer, Server, Model } from 'miragejs'

export function makeServer({ environment = "development" } = {}) {
  return new Server({
    environment, // 环境变量
    // 数据模型，描述数据结构，用于 Mirage 的 ORM
    models: {
      todo: Model,
    },
    // 数据生成器
    seeds(server: any) {
      server.create('todo', { content: 'Learn Mirage JS' })
      server.create('todo', { content: 'Integrate With React' })
    },
    // 路由处理
    routes() {
      this.namespace = 'api'

      this.post(
        '/users',
        () => ({
          users: [
            { id: 1, name: 'Walk the dog' },
            { id: 2, name: 'Take out the trash' },
            { id: 3, name: 'Work out' },
          ],
        }),
        { timing: 3000 },
      )

      this.get('/todos', (schema: any) => {
        return schema.todos.all()
      }, { timing: 3000 })
      // 如果执行这个方法，其他没有匹配的请求路径不会拦截。适合只模拟部分接口的情况
      this.passthrough()
    },
  })
}